package com.nabalive.applications.contes;
import com.google.common.io.ByteStreams;
import com.mongodb.DBObject;
import com.mongodb.util.JSON;
import com.nabalive.application.core.ApplicationBase;
import com.nabalive.common.server.MessageService;
import com.nabalive.data.core.model.ApplicationConfig;
import com.nabalive.data.core.model.Nabaztag;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import static com.google.common.base.Objects.firstNonNull;
@Component("contes")
public class ContesApplication extends ApplicationBase {
private static Random rand = new Random();
private final Logger logger = LoggerFactory.getLogger(this.getClass());
private final ObjectMapper mapper = new ObjectMapper();
@Override
public String getApikey() {
return "0C3F8F93-2B87-4B7E-A6EF-62E0D0121FC1";
}
@Autowired
private MessageService messageService;
public String getRand() throws IOException {
InputStream inputStream = getClass().getResourceAsStream("/contes.json");
JsonNode jsonNodes = mapper.readTree(inputStream);
Iterator<Map.Entry<String,JsonNode>> fields = jsonNodes.get("fields").get(0).get("values").getFields();
List<Map.Entry<String,JsonNode>> listFields = new ArrayList<Map.Entry<String,JsonNode>>();
while(fields.hasNext()){
listFields.add(fields.next());
}
int sz = listFields.size();
return listFields.get(rand.nextInt(sz)).getValue().getTextValue();
}
@Override
public void onStartup(Nabaztag nabaztag, ApplicationConfig applicationConfig) throws Exception {
StringBuilder command = new StringBuilder();
String conte = applicationConfig.getParameters().get("conte").get(0);
if("rand".equalsIgnoreCase(conte)){
conte = getRand();
}
command.append("ST "+conte+"\nMW\n");
messageService.sendMessage(nabaztag.getMacAddress(), command.toString());
}
}